/*
 * 使用位运算符实现某些操作
 */

// 将浮点数截取到整数 ( 不是四舍五入，而是将小数部分抹掉 )
let float = 95.27 ;
let integer1 = float | 0 ;
console.log( integer1 );

let integer2 = float ^ 0 ;
console.log( integer2 );

let integer3 = ~(~float) ;
console.log( integer3 );

let integer4 = float << 0 ;
console.log( integer4 );

let integer5 = float >> 0 ;
console.log( integer5 );


// 交换两个变量中存储的值
let left = 5 ;   // 0000_0000_0000_0000_0000_0000_0000_0101
let right = -6 ; // 1111_1111_1111_1111_1111_1111_1111_1010
console.log( `left = ${left} , right = ${right}`);
/*
let temp = left ;
left = right ;
right = temp ;
*/

// left : 0000_0000_0000_0000_0000_0000_0000_0101
// right: 1111_1111_1111_1111_1111_1111_1111_1010
//        1111_1111_1111_1111_1111_1111_1111_1111
left = left ^ right ; // left: 1111_1111_1111_1111_1111_1111_1111_1111

// left : 1111_1111_1111_1111_1111_1111_1111_1111
// right: 1111_1111_1111_1111_1111_1111_1111_1010
//        0000_0000_0000_0000_0000_0000_0000_0101
right = left ^ right ; // right: 0000_0000_0000_0000_0000_0000_0000_0101

// left : 1111_1111_1111_1111_1111_1111_1111_1111
// right: 0000_0000_0000_0000_0000_0000_0000_0101
//        1111_1111_1111_1111_1111_1111_1111_1010
left = left ^ right ; // left: 1111_1111_1111_1111_1111_1111_1111_1010
console.log( `left = ${left} , right = ${right}`);